﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//------------//
using QLKTX1._0.DTO;
using QLKTX1._0.DB;
using System.Data.SqlClient;
using System.Data;
using System.Globalization;
//....................
namespace QLKTX1._0.DAO
{
    class NhanVienDAO
    {

        public static NhanVienDTO getInfoNhanVien(String ID)
        {
            NhanVienDTO nv = new NhanVienDTO();

            ConnectDB con = new ConnectDB();

            String sql = "";

            sql += " SELECT dbo.nhanVien.maNhanVien, dbo.nhanVien.tenNhanVien, dbo.nhanVien.diaChi, dbo.nhanVien.CMND, dbo.nhanVien.dienThoai, dbo.nhanVien.gioiTinh,"; 
            sql += " dbo.nhanVien.tinhTrang, dbo.nhanVien.ngaySinh, dbo.nhanVien.ngayNghiViec, dbo.nhanVien.ngayBatDau, dbo.nhanVien.hinhAnh, dbo.DanToc.tenDanToc,"; 
            sql += " dbo.DanToc.maDanToc, dbo.TonGiao.maTonGiao, dbo.TonGiao.tenTonGiao, dbo.hocVan.maHocVan, dbo.hocVan.tenHocVan, dbo.ChucVu.maChucVu,"; 
            sql += " dbo.ChucVu.tenChucVu";
            sql += " FROM dbo.nhanVien INNER JOIN";
            sql += " dbo.DanToc ON dbo.nhanVien.maDanToc = dbo.DanToc.maDanToc INNER JOIN";
            sql += " dbo.TonGiao ON dbo.nhanVien.maTonGiao = dbo.TonGiao.maTonGiao INNER JOIN";
            sql += " dbo.hocVan ON dbo.nhanVien.maHocVan = dbo.hocVan.maHocVan INNER JOIN";
            sql += " dbo.ChucVu ON dbo.nhanVien.maChucVu_FK = dbo.ChucVu.maChucVu";
            sql += " WHERE (dbo.nhanVien.maNhanVien = '"+ID+"')";

            DataTable dt = con.getDataTable(sql);


            if (dt.Rows.Count == 1)
            {
                int i = 0; // luon luon co 1 hang 

                nv.MaNhanVien = dt.Rows[i]["maNhanVien"].ToString();
                nv.TenNhanVien = dt.Rows[i]["tenNhanVien"].ToString();
                nv.DiaChi = dt.Rows[i]["diaChi"].ToString();
                nv.CMND = dt.Rows[i]["CMND"].ToString();
                nv.DienThoai = dt.Rows[i]["dienThoai"].ToString();
               
                if (Convert.ToBoolean(dt.Rows[i]["gioiTinh"]))
                {
                    nv.GioiTinh = 1;
                }
                else nv.GioiTinh = 0;

                if (Convert.ToBoolean(dt.Rows[i]["tinhTrang"]))
                {
                    nv.TinhTrang = 1;//Nghi viec
                }
                else nv.TinhTrang = 0;
               // if (Convert.ToBoolean(dt.Rows[i]["gioiTinh"]))
             //   {
              //      nv.GioiTinh = 1;
               // }
               // else nv.GioiTinh = 0;
                nv.NgaySinh = Convert.ToDateTime(dt.Rows[i]["ngaySinh"].ToString());
                nv.NgayNghiViec = Convert.ToDateTime(dt.Rows[i]["ngayNghiViec"].ToString());
                nv.NgayBatDau = Convert.ToDateTime(dt.Rows[i]["ngayBatDau"].ToString());
                nv.HinhAnh = dt.Rows[i]["hinhAnh"].ToString();

                TonGiaoDTO tg = new TonGiaoDTO();
                tg.MaTonGiao = Int32.Parse(dt.Rows[i]["maTonGiao"].ToString());
                tg.TenTonGiao = dt.Rows[i]["tenTonGiao"].ToString();
                nv.MaTonGiao = tg;

                DanTocDTO t = new DanTocDTO();
                t.MaDanToc = Int32.Parse(dt.Rows[i]["maDanToc"].ToString());
                t.TenDanToc = dt.Rows[i]["tenDanToc"].ToString();
                nv.MaDanToc = t;

                HocVanDTO hv = new HocVanDTO();
                hv.MaHocVan = dt.Rows[i]["maHocVan"].ToString();
                hv.TenHocVan = dt.Rows[i]["tenHocVan"].ToString();
                nv.MaHocVan = hv;

                ChucVuDTO cv = new ChucVuDTO();
                cv.MaChucVu = Int32.Parse(dt.Rows[i]["maChucVu"].ToString());
                cv.TenChucVu = dt.Rows[i]["tenChucVu"].ToString();
                nv.MaChucVu = cv;

                                  
                
            }
            return nv;
        }


        public static List<NhanVienDTO> dsNhanVien()
        {

            List<NhanVienDTO> dsNhanVien = new List<NhanVienDTO>();

            ConnectDB con = new ConnectDB();
            DataTable dt = con.getDataTable("SELECT * FROM nhanVien");


            for (int i = 0; i < dt.Rows.Count; i++)
            {
                NhanVienDTO nv = new NhanVienDTO();
              

                nv.MaNhanVien = dt.Rows[i]["maNhanVien"].ToString();
                nv.TenNhanVien = dt.Rows[i]["tenNhanVien"].ToString();
                nv.DiaChi = dt.Rows[i]["diaChi"].ToString();
                nv.CMND = dt.Rows[i]["CMND"].ToString();
                nv.DienThoai = dt.Rows[i]["dienThoai"].ToString();

                if (Convert.ToBoolean(dt.Rows[i]["gioiTinh"]))
                {
                    nv.GioiTinh = 1;
                }
                else nv.GioiTinh = 0;

                if (Convert.ToBoolean(dt.Rows[i]["tinhTrang"]))
                {
                    nv.TinhTrang = 1;//Nghi viec
                }
                else nv.TinhTrang = 0;
                // if (Convert.ToBoolean(dt.Rows[i]["gioiTinh"]))
                //   {
                //      nv.GioiTinh = 1;
                // }
                // else nv.GioiTinh = 0;
                nv.NgaySinh = Convert.ToDateTime(dt.Rows[i]["ngaySinh"].ToString());
                nv.NgayNghiViec = Convert.ToDateTime(dt.Rows[i]["ngayNghiViec"].ToString());
                nv.NgayBatDau = Convert.ToDateTime(dt.Rows[i]["ngayBatDau"].ToString());
                nv.HinhAnh = dt.Rows[i]["hinhAnh"].ToString();

                TonGiaoDTO tg = new TonGiaoDTO();
                tg.MaTonGiao = Int32.Parse(dt.Rows[i]["maTonGiao"].ToString());
               // tg.TenTonGiao = dt.Rows[i]["tenTonGiao"].ToString();
                nv.MaTonGiao = tg;

                DanTocDTO t = new DanTocDTO();
                t.MaDanToc = Int32.Parse(dt.Rows[i]["maDanToc"].ToString());
               // t.TenDanToc = dt.Rows[i]["tenDanToc"].ToString();
                nv.MaDanToc = t;

                HocVanDTO hv = new HocVanDTO();
                hv.MaHocVan = dt.Rows[i]["maHocVan"].ToString();
               // hv.TenHocVan = dt.Rows[i]["tenHocVan"].ToString();
                nv.MaHocVan = hv;

                ChucVuDTO cv = new ChucVuDTO();
                cv.MaChucVu = Int32.Parse(dt.Rows[i]["maChucVu_FK"].ToString());
                //cv.TenChucVu = dt.Rows[i]["tenChucVu"].ToString();
                nv.MaChucVu = cv;
                dsNhanVien.Add(nv);
            }

            return dsNhanVien;
        }
        //Ham Insert
        public static bool themNhanVien(NhanVienDTO nv)
        {
            ConnectDB con = new ConnectDB();// dung DB

            return con.executeQuery("INSERT INTO nhanVien(maNhanVien,tenNhanVien,diaChi,CMND,dienThoai,gioiTinh,tinhTrang,ngaySinh,ngayNghiViec,ngayBatDau,hinhAnh,maTonGiao,maDanToc,maHocVan,maChucVu_FK) VALUES('" + nv.MaNhanVien + "','" + nv.TenNhanVien + "','" + nv.DiaChi + "','" + nv.CMND + "','" + nv.DienThoai + "'," + nv.GioiTinh + "," + nv.TinhTrang + ",'" + nv.NgaySinh.ToString("yyyy-MM-dd") + "','" + nv.NgayNghiViec.ToString("yyyy-MM-dd") + "','" + nv.NgayBatDau.ToString("yyyy-MM-dd") + "','" + nv.HinhAnh + "'," + nv.MaTonGiao.MaTonGiao + "," + nv.MaDanToc.MaDanToc + ", '" + nv.MaHocVan.MaHocVan + "',"+nv.MaChucVu .MaChucVu +")");
        }
        //Ham Delete
        public static bool xoaNhanVien(NhanVienDTO nv)
        {
            ConnectDB con = new ConnectDB();

            return con.executeQuery("DELETE FROM nhanVien WHERE maNhanVien='" + nv.MaNhanVien  + "' ");
        }
        //Ham Update
        public static bool capNhatNhanVien(NhanVienDTO nv)
        {
            ConnectDB con = new ConnectDB();

            return con.executeQuery("UPDATE nhanVien set tenNhanVien='" + nv.TenNhanVien + "',diaChi='" + nv.DiaChi + "',CMND='" + nv.CMND + "',dienThoai='" + nv.DienThoai + "', gioiTinh=" + nv.GioiTinh + ", tinhTrang=" + nv.TinhTrang + ",ngaySinh= '" + nv.NgaySinh.ToString("yyyy-MM-dd") + "',ngayNghiViec= '" + nv.NgayNghiViec.ToString("yyyy-MM-dd") + "', ngayBatDau='" + nv.NgayBatDau.ToString("yyyy-MM-dd") + "', hinhAnh='" + nv.HinhAnh + "' WHERE maNhanVien='" + nv.MaNhanVien + "'");
        }
    }
}
